草庐IT

ios - sortedArrayUsingSelector 警告

全部标签

c++ - 将(某些)valgrind 警告视为错误?

是否可以将某些valgrind警告更改为错误?特别是,我想将probablylost警告变成错误。在valgrind手册中,我只找到有关如何抑制警告的信息。有没有办法做我想做的事? 最佳答案 从valgrind3.9版本开始,您可以使用以下命令行选项以便更好地控制哪些泄漏到报告中,哪些泄漏被视为错误。--show-leak-kinds=kind1,kind2,..whichleakkindstoshow?[definite,possible]--errors-for-leak-kinds=kind1,kind2,..whichlea

c++ - 将负文字作为无符号参数传递时,g++ 会发出警告吗?

考虑:unsignedfoo(unsignedu){returnu;}intmain(){foo(-1);return0;}在这里,函数foo被调用时u等于4294967295(或类似的大值)。如果程序员不注意,这可能相当出乎意料。例如,也许您正在实现pow以将Polynomial类提升为幂。因为只有正幂是可能的,所以你决定签名Polynomialpow(constPolynomial&p,unsignedexp);然后一个粗心的程序员调用pow(p,-1)得到一个逆函数,而不是一个警告或错误,它似乎可以工作,但可能会使用大量的内存和时间产生一个完全错误的答案。g++5.3.0和gcc

c++ - 静态 std::stringstream 的 Clang-tidy 警告

我有以下MCVE:#includestructA{staticstd::stringstreams;};std::stringstreamA::s;intmain(){}当我在此代码上运行clang-tidy6.0.1时,我收到以下警告:static_sstream.cpp:7:22:warning:initializingnon-localvariablewithnon-constexpressiondependingonuninitializednon-localvariable'out'[cppcoreguidelines-interfaces-global-init]std::

c++ - 为什么编译器会警告 setprecision 中的隐式转换?

当我编译下面的代码时,编译器给我警告:"Implicitconversionlosesintegerprecision:'std::streamsize'(aka'long')to'int'".我对这个警告有点困惑,因为我只是尝试保存精度的当前值,以便稍后将其设置回原始值。#include#includeintmain(){std::streamsizeprec=std::cout.precision();std::cout在这种情况下,保存精度值并稍后将其恢复的正确方法是什么? 最佳答案 看起来这只是标准规范中的一个疏忽。ios_

C++:警告: '...' 声明的可见性高于其字段 '...::<anonymous>' 的类型

我收到这两个警告(在MacOSX上使用GCC4.2):/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:0/Users/az/Programmierung/openlierox/build/Xcode/../../src/main.cpp:154:警告:“startMainLockDetector()::MainLockDetector”声明的可见性高于其字段类型“startMainLockDetector()::MainLockDetector::”/Users/az/Programmieru

c++ - gcc 4.6.1 错误的严格别名警告

我正在尝试使用-pedantic-errors-pedantic-Wall-O2在gcc上编译以下内容#includevoidreset_uint32(uint32_t*pi){char*c=(char*)(pi);uint16_t*j=(uint16_t*)(c);//warning?j[0]=0;j[1]=0;}voidfoo(){uint32_ti=1234;reset_uint32(&i);}intmain(){foo();}但我没有看到任何严格的别名警告。我也试过启用-fstrict-aliasing-Wstrict-aliasing但仍然没有警告。这是一个错误吗?

C++ 异常和 ld 符号警告

我正在尝试用C++创建异常,我有以下测试代码:#include#include#includeusingnamespacestd;classMyerror:publicruntime_error{private:stringerrmsg;public:Myerror(conststring&message):runtime_error(message){}};intmain(intargc,char*argv[]){throwMyerror("wassup?");}我正在编译这个:icpc-std=c++11-O3-m64编译后我收到这个ld警告:ld:warning:directac

c++ - "already a friend"警告什么时候有用?

我的代码使用大量预处理器框架来生成一些实用程序类。显然,某些宏会导致相同的friend声明在一个类中被包含两次,如下所示:classFriendly{//:::friendclassBestie;friendclassBestie;//:::};当使用gcc(4.8.1)构建时,它会生成类似这样的警告BestieisalreadyafriendofFriendly[enabledbydefault]我真的看不出这个警告有什么用。我很好奇为什么它首先包含在gcc中。然而,由于SO社区很难回答这个问题,我将这样陈述我的问题:出现指示?我能想到的唯一可能暗示的问题是“你可能打算在这里写一些别

c++ - 使用复合赋值运算符解决转换警告

在我们公司,我们制定了使用-Wconversion进行编译的政策,这会产生一些转换警告。虽然我同意这种额外的检查可以防止错误,但在以下情况下看到速记运算符的警告很烦人:uint8_tbyte;byte+=8;//conversionto'uint8_t'from'int'mayalteritsvalue[-Wconversion]现在这可以通过将其重写为byte=(uint8_t)(byte+8)来解决,这反过来会降低代码的可读性。有没有更好的方法来做到这一点? 最佳答案 考虑您收到警告的原因,即整型常量8的类型为int。C中的所有

c++ - 更改 CLion 中的默认 CMakeLists.txt 以包含警告

在CLion中,默认的CMakeLists.txt仅设置C++11编译器标志。我希望在我的所有项目中默认设置警告和迂腐标志。这是默认的set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11")我希望默认使用它,这样我就不必在每次创建新项目时都更改它set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11-W-Wall-Wextra-pedantic")在“设置”-“文件和代码模板”中,我可以更改C++header/源模板,但不能更改CMakeLists.txt模板。有什么方法可以更改CLion中的默认CM